package com.sunwhite.deeplearning.demo01.perceptron;

import com.sunwhite.deeplearning.demo01.util.TransferFunction;

/**
 * 名称：感知机
 * 作用：用于区分香蕉和苹果
 * 描述：      感知机是最简单的神经网络，神经网络可以接受若干个输入，并通过输出函数，传输函数给出一个网络的输出。
 *      使用形象化的数学公式可以表示为：s=p1w1+p2w2+p3w3+......+pnwn; p1为信号1输入，w1是输入信号1的强度。
 *      依次类推p2,p3,pn均为输入信号，w2,w3,wn均为输入信号的强度也可以叫做权重。相加的算法称为处理函数f（s）
 *     现在我们这个网络是用于区分香蕉和苹果的。
 *         我们假设香蕉和苹果只有两个特征，颜色和形状。
 *         设置特征值：       品种              颜色          形状
 *                          苹果               1（青或红色）            1（圆形）
 *                          香蕉              -1（黄色）              -1（弯形）
 *
 */
public class Distinguish {
    public Integer p1;    //信号1颜色
    public Integer w1=1;  //信号1的强度（默认值为1）

    public Integer p2;      //信号2形状
    public Integer w2=1;   //信号2的强度（默认值为1）

    public Integer b=0;     //感知机内部强度值

    /**
     * 信号处理函数
     * @param p1    颜色信号
     * @param p2    形状信号
     * @return
     */
    public Integer handler(Integer p1,Integer p2){
        return p1*w1+p2*w2+b;
    }

    /**
     * 传输函数f 将信号处理的结果值进行处理并输出
     * @param result    信号处理函数的结果
     * @return  传出的结果
     */
    public String f(Integer result){
        return TransferFunction.step(result)==0?"香蕉":"苹果";
    }


}
